package com.decent.manager.system.dao;

import com.decent.common.bo.MessageBean;
import com.decent.manager.system.dao.provider.SystemClassifyDaoProvider;
import com.decent.manager.system.dao.provider.SystemRoleDaoProvider;
import com.decent.manager.system.dto.SystemClassifyDTO;
import com.decent.manager.system.vo.SystemClassifyVO;
import org.apache.ibatis.annotations.*;

import java.util.List;

/**
 * @author: decent Gjh
 * @date: 2022/10/25/19:01
 * @description:
 */
@Mapper
public interface SystemClassifyDao {
    /**
     * 插入类别
     * @param classifyDTO 类别信息
     */
    @Insert("insert into common_classify (name,ico_url,sort,create_datetime) " +
            "values (#{classify.name},#{classify.icoUrl},#{classify.sort},now()) ")
    void insert(@Param("classify") SystemClassifyDTO classifyDTO);

    /**
     * 根据id删除类别
     * @param classifyId 要删除的类别id
     * @return 影响行数
     */
    @Delete("delete from common_classify where id = #{classifyId}")
    int deleteClassify(@Param("classifyId") int classifyId);

    /**
     * 根据id修改分类
     * @param classifyDTO 分类信息
     * @return 影响行数
     */
    @Update("update common_classify set name = #{classify.name}, " +
            "sort = #{classify.sort}, update_datetime = now() where id = #{classify.id}")
    int updateClassify(@Param("classify") SystemClassifyDTO classifyDTO);

    /**
     * 查询分类
     * @param classifyDTO 过滤信息
     * @return 分类列表
     */
    @SelectProvider(type = SystemClassifyDaoProvider.class, method = "list")
    List<SystemClassifyVO> selectClassify(@Param("classify") SystemClassifyDTO classifyDTO);

    /**
     * 查询是否有对应id的分类
     * @param id 分类id
     * @return 分类的数量
     */
    @Select("select count(*) from common_classify where id= #{id}")
    int existClassify(@Param("id") int id);

    /**
     * 根据id查询分类
     * @param id 分类id
     * @return  分类信息
     */
    @Select("select * from common_classify where id = #{id}")
    SystemClassifyVO selectClassifyById(@Param("id") Integer id);
}
